<?php
/**
 * 写文件处理器
 *
 * @version $Id$
 * @package if
 * @subpackage util.io
 */
class IFileWriter extends IAbstractFileProcessor {
	/**
	 * Enter description here...
	 *
	 * @var IFile
	 */
	private $file;
	
	/**
	 * 构造
	 *
	 * @param IFile $file 文件对象
	 * @since 1.0
	 */
	function __construct(IFile $file) {
		$this->file = $file;
	}
	
	/**
	 * 写入字符串
	 * 
	 * 1.1.0加入了$force参数，如果设为true，则强制创建文件所在的多级目录不存在的部分
	 *
	 * @param string $string 字符串
	 * @param boolean $force 是否强制创建多级目录，1.1.0加入
	 * @param boolean $parentMode 新创建的各父级目录的权限，1.1.1加入
	 * @return boolean
	 * @since 1.0
	 */
	function write($string, $force = false, $parentMode = 0777) {
		if ($force) {
			@mkdir(dirname($this->file->path()), $parentMode, true);
		}
		$handler = $this->handler();
		if ($handler->isReady()) {
			return fwrite($handler->handler(), $string);
		}
		return false;
	}
	
	/**
	 * 取得文件句柄
	 *
	 * @return IFileHandler
	 * @since 1.0
	 */
	function handler() {
		return parent::fileHandler($this->file, "wb+", IFileHandler::LOCK_EXCLUSIVE);
	}
}

?>